package com.liujun.io.nio.mysql.bean.protocol;

import java.nio.ByteBuffer;
import java.util.Map;

import com.liujun.io.nio.mysql.protocol.comm.BufferUtil;
import com.liujun.io.nio.mysql.protocol.inf.DataParseInf;

/**
 * 进行第一次的握手协议包
* 源文件名：HandshakePackage.java
* 文件版本：1.0.0
* 创建作者：liujun
* 创建日期：2016年12月8日
* 修改作者：liujun
* 修改日期：2016年12月8日
* 文件描述：TODO
* 版权所有：Copyright 2016 zjhz, Inc. All Rights Reserved.
*/
public class QueryPackageBean extends PackageHeader implements DataParseInf<QueryPackageBean> {

    /**
     * 查询标识符
    * @字段说明 flag
    */
    private byte flag;

    /**
     * 查询的字符信息
    * @字段说明 queryStr
    */
    private byte[] queryStr;

    @Override
    public QueryPackageBean readPackage(ByteBuffer buffer) {

        return this;
    }

    @Override
    public int getpackageSize() {
        int size = 0;

        // 1,第1位，发送包的类型信息
        size = size + 1;
        // 第二位为查询的SQL语句
        size = size + (queryStr == null ? 1 : queryStr.length);

        return size;
    }

    @Override
    public ByteBuffer getWriteToPackage(Map<String, Object> param) {

        // 设置当前的包顺序为1
        this.seq = 0;
        // 操作的类型信息
        this.flag = (byte) 0x03;
        // 查询的字符信息
        String msg = "select * from userinfo;";
        this.queryStr = msg.getBytes();

        int pkgSize = this.getpackageSize();

        ByteBuffer buffer = ByteBuffer.allocate(pkgSize + 4);

        // 进行包大小的数据写入
        BufferUtil.writeUB3(buffer, pkgSize);
        // 写入包在id
        buffer.put(seq);
        // 进行查询操作
        buffer.put(flag);
        // 写入查询字符
        buffer.put(this.queryStr);

        return buffer;
    }

}
